﻿using System;
using System.Collections.Generic;

namespace Demo.CacheManager
{
    // 在声明泛型方法/泛型类的时候，可以给泛型加上一定的约束来满足我们特定的一些条件。
    public class CacheHelper<T> where T : new()
    {

    }
}

/*
 泛型限定条件：

 T：结构（类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型）
 T：类 （类型参数必须是引用类型，包括任何类、接口、委托或数组类型）
 T：new() （类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时new() 约束必须最后指定）
 T：<基类名> 类型参数必须是指定的基类或派生自指定的基类
 T：<接口名称> 类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
 T：U
 */